package general_tips;

import java.util.Stack;

public class DandiaoStack {
    public static void main(String[] args) {
//        int[] ans = nextGreater(new int[]{2, 1, 2, 4, 3});
//        for (int an : ans) {
//            System.out.print(an + " ");
//        }
        int[] arr = {1,2,3,4,5};
        int n = arr.length, index = 0;
        while (true) {
            System.out.println(arr[index%n]);
            index++;
            if(index==20) break;
        }



    }

    //求一个数组中每个元素的  比它大的下个元素，没有设置-1
    public static int[] nextGreater(int nums[]) {
        //初始化结果数组和栈
        int[] ans = new int[nums.length];
        Stack<Integer> stack = new Stack<>();

        //倒着把元素放进去
        for (int i = nums.length - 1; i >= 0; i--) {
            //放之前判断和栈顶元素的大小关系
            while (!stack.empty() && nums[i] >= stack.peek()) {
                //如果栈顶元素小于要放的元素，把栈顶元素都弹出
                stack.pop();
            }
            //弹出以后判断栈是否为空，如果为空设置-1,如果不为空设置为栈顶元素（此时栈顶元素就是下一个比他大的）
            ans[i] = stack.isEmpty() ? -1 : stack.peek();

            //最后入栈
            stack.push(nums[i]);
        }
        return ans;
    }

}
